home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / FFPDEMO.SA < prev    next >
Text File  |  1989-08-30  |  7KB  |  225 lines

  1.          TTL       FAST FLOATING POINT DEMO PROGRAM
  2. ***************************************
  3. * (C) COPYRIGHT 1981 BY MOTOROLA INC. *
  4. ***************************************
  5.  
  6. ***************************************************
  7. * THIS IS A DEMO OF THE 68343 FAST FLOATING POINT *
  8. ***************************************************
  9.  
  10.          OPT       FRS
  11.  
  12.          XREF      FFPSQRT  EXTERNAL ROUTINES
  13.          XREF      FFPADD,FFPDIV,FFPMUL
  14.          XREF      FFPSINCS
  15.          XREF      FFPAFP,FFPFPA
  16.  
  17.          XDEF      FFPDEMO
  18.  
  19.          SECTION   2
  20.  
  21.  
  22. FFPDEMO  LEA       STACK,SP  LOAD STACK
  23.  
  24.          BSR       MSG                 BLANK LINE AT FIRST
  25.          DC.L      '        '          BLANK LINE
  26.          LEA       HELLO,A0            SETUP START MESSAGE
  27.          LEA       HELLOE,A1           END OF MSG
  28.          BSR       PUT                 PUT THIS OUT
  29.          LEA       HELLO2,A0           SECOND MESSAGE
  30.          LEA       HELLO2E,A1          END OF MSG
  31.          BSR       PUT                 PUT COPYRIGHT OUT
  32.          BSR       MSG                 ANOTHER BLANK NOW
  33.          DC.L      '        '          BLANK LINE
  34.  
  35.          LEA       ASCIIPI,A0          CONVERT PI TO FLOAT
  36.          BSR       FFPAFP
  37.          MOVE.L    D7,D0               SAVE PI IN D0
  38.  
  39.          LEA       ASCIIE,A0           CONVERT 'E' TO FLOAT
  40.          BSR       FFPAFP
  41.          MOVE.L    D7,D1               SAVE E IN D1
  42.  
  43. *****************
  44. * ADDITION DEMO *
  45. *****************
  46.  
  47.          LEA       MSGADD,A0 POINT TO MESSAGE
  48.          LEA       MSGADDE,A1 POINT TO END
  49.          BSR       PUT       SEND TO CONSOLE
  50.  
  51.          MOVE.W    #50000,D2           SAVE LOOP COUNT
  52.          MOVE.L    D0,D6               MOVE PI
  53.  
  54. ADDLOOP  MOVE.L    D1,D7               RELOAD E
  55.          BSR       FFPADD              PERFORM ADD
  56.          DBRA      D2,ADDLOOP
  57.  
  58.          BSR       RESULT              DISPLAY RESULT
  59.  
  60.  
  61. *****************
  62. * MULTIPLY DEMO *
  63. *****************
  64.  
  65.          LEA       MSGMUL,A0 POINT TO MESSAGE
  66.          LEA       MSGMULE,A1 AND END
  67.          BSR       PUT SEND TO CONSOLE
  68.  
  69.          MOVE.W    #50000,D2 SETUP LOOP COUNT
  70.          MOVE.L    D0,D6     SETUP PI
  71.  
  72. MULLOOP  MOVE.L    D1,D7     SETUP E
  73.          BSR       FFPMUL    PERFORM MULTIPLY
  74.          DBRA      D2,MULLOOP LOOP UNTIL DONE
  75.  
  76.          BSR.S     RESULT    DISPLAY RESULT
  77.  
  78. ***************
  79. * DIVIDE DEMO *
  80. ***************
  81.  
  82.          LEA       MSGDIV,A0 POINT TO MESSAGE
  83.          LEA       MSGDIVE,A1 AND END
  84.          BSR       PUT SEND TO CONSOLE
  85.  
  86.          MOVE.W    #50000,D2 SETUP LOOP COUNT
  87.          MOVE.L    D0,D6     SETUP PI
  88.  
  89. DIVLOOP  MOVE.L    D1,D7     SETUP E
  90.          BSR       FFPDIV    PERFORM DIVIDE
  91.          DBRA      D2,DIVLOOP LOOP UNTIL DONE
  92.  
  93.          BSR.S     RESULT    DISPLAY RESULT
  94.  
  95. ********************
  96. * SQUARE ROOT DEMO *
  97. ********************
  98.  
  99.          LEA       MSGSQR,A0 POINT TO MESSAGE
  100.          LEA       MSGSQRE,A1 AND END
  101.          BSR       PUT SEND TO CONSOLE
  102.  
  103.          MOVE.W    #20000,D2 SETUP LOOP COUNT
  104.  
  105. SQRLOOP  MOVE.L    D0,D7     SETUP PI
  106.          BSR       FFPSQRT   PERFORM SQUARE ROOT
  107.          DBRA      D2,SQRLOOP LOOP UNTIL DONE
  108.  
  109.          BSR.S     RESULT    DISPLAY RESULT
  110.  
  111. ************************
  112. * SINE AND COSINE DEMO *
  113. ************************
  114.  
  115.          LEA       MSGSIN,A0 POINT TO MESSAGE
  116.          LEA       MSGSINE,A1 AND END
  117.          BSR.S     PUT SEND TO CONSOLE
  118.  
  119.          MOVE.W    #10000,D2 SETUP LOOP COUNT
  120.  
  121. SINLOOP  MOVE.L    D1,D7     SETUP E
  122.          BSR       FFPSINCS  PERFORM SINE AND COSINE
  123.          DBRA      D2,SINLOOP LOOP UNTIL DONE
  124.  
  125.          BSR.S     RESULT    DISPLAY COSINE
  126.          MOVE.L    D6,D7     ALSO DISPLAY SINE
  127.          BSR.S     RESULT    AS WELL
  128.  
  129. ************
  130. * END TEST *
  131. ************
  132. QUIT     BSR.S     MSG       ISSUE DONE MESSAGE
  133.          DC.L      '  DONE  '
  134.          BSR.S     MSG       AND FINAL BLANK LINE
  135.          DC.L      '        '
  136.          MOVE.L    #15,D0    SETUP EXIT TASK CODE
  137.          TRAP      #1        HERE
  138.  
  139.  
  140. *   *
  141. *   * RESULT DISPLAY SUBROUTINE
  142. *   *   INPUT IS FLOAT IN D7
  143. *   *
  144. RESULT   BSR       FFPFPA
  145.          MOVE.L    #'LT: ',-(SP)   MOVE RESULT HEADER
  146.          MOVE.L    #'RESU',-(SP)   ONTO STACK
  147.          LEA       (SP),A0   POINT TO MESSAGE
  148.          LEA       14+8-1(SP),A1 POINT TO END OF MESSAGE
  149.          BSR.S     PUT       ISSUE TO CONSOLE
  150.          LEA       14+8(SP),SP         GET RID OF CONVERSION AND HEADING
  151.          BSR.S     MSG       PUT BLANK LINE OUT
  152.          DC.L      '        '
  153.          RTS                 RETURN TO CALLER
  154.  
  155.  
  156. *   *
  157. *   * MSG SUBROUTINE
  158. *   *  INPUT: (SP) POINT TO EIGHT BYTE TEXT FOLLOWING BSR/JSR
  159. *   *
  160. MSG      MOVEM.L   D0/A0/A1,-(SP) SAVE REGS
  161.          MOVE.L    3*4(SP),A0 LOAD RETURN POINTER
  162.          LEA       7(A0),A1   POINT TO BUFFER END
  163.          BSR.S     PUT       ISSUE IOS CALL
  164.          MOVEM.L   (SP)+,D0/A0/A1 RELOAD REGISTERS
  165.          ADD.L     #8,(SP)   ADJUST RETURN ADDRESS
  166.          RTS                 RETURN TO CALLER
  167.  
  168. *   *
  169. *   * PUT SUBROUTINE
  170. *   *  INPUT: A0->TEXT START, A1->TEXT END
  171. *   *
  172. PUT      MOVEM.L   D0/A0/A1,-(SP) SAVE REGS
  173.          MOVEM.L   A0-A1,BUFPTR SETUP BUFFER POINTERS
  174.          SUB.L     A0,A1     COMPUTE LENGTH-1
  175.          LEA       1(A1),A1  ADD ONE
  176.          MOVE.L    A1,BUFLEN INSERT LENGTH
  177.          MOVE.B    #6,DEVICE TO OUTPUT STREAM
  178.          MOVE.B    #2,IOSBLK+1 AND WRITE FUNCTION
  179.          LEA       IOSBLK,A0  LOAD BLOCK ADDRESS
  180.          TRAP      #2        ISSUE IOS CALL
  181.          MOVEM.L   (SP)+,D0/A0/A1 RELOAD REGISTERS
  182.          RTS                 RETURN TO CALLER
  183.  
  184.  
  185. * IOS BLOCK FOR TERMINAL FORMATED SEND
  186. IOSBLK   DC.B     0,2,0,0    WRITE FORMATTED WAIT
  187.          DC.B     0
  188. DEVICE   DC.B     0,0,0
  189.          DC.L     0
  190. BUFPTR   DC.L      0,0
  191. BUFLEN   DC.L      0,0
  192.  
  193. * PI AND E ASCII CONSTANTS
  194. ASCIIPI  DC.B      '+3.1415926535897 '
  195. ASCIIE   DC.B      '+2.718281828459045 '
  196.  
  197. * MESSAGES FOR THE DEMO PARTS
  198. HELLO    DC.W      'MOTOROLA MC68000 FAST FLOATING POINT DEMO'
  199. HELLOE   DC.B      0
  200.  
  201. HELLO2   DC.W      '     (C) COPYRIGHT 1981 BY MOTOROLA'
  202. HELLO2E  DC.B      0
  203.  
  204. MSGADD   DC.W      'FIFTY THOUSAND ADDITIONS OF 3.14159265 TO 2.718281828'
  205. MSGADDE  DC.B      0
  206.  
  207. MSGMUL   DC.W      'FIFTY THOUSAND MULTIPLIES OF 3.14159265 WITH 2.718281828'
  208. MSGMULE  DC.B      0
  209.  
  210. MSGDIV   DC.W      'FIFTY THOUSAND DIVIDES OF 3.14159265 INTO 2.718281828'
  211. MSGDIVE  DC.B      0
  212.  
  213. MSGSQR   DC.W      'TWENTY THOUSAND SQUARE ROOTS OF 3.14159265'
  214. MSGSQRE  DC.B      0
  215.  
  216. MSGSIN   DC.W      'TEN THOUSAND COSINES AND SINES OF 2.718281828'
  217. MSGSINE  DC.B      0
  218.  
  219. * PROGRAM STACK
  220.          DCB.W     100,0      STACK AREA
  221. STACK    EQU       *
  222.  
  223.          END       FFPDEMO
  224.  
  225.